package br.com.unip.persistencia;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import br.com.unip.modelo.Departamento;

public class DepartamentoDao extends Dao {
	public void gravar(Departamento d) throws Exception {
		abrirBanco();
		String query = "INSERT INTO depto (nome, cod_ger) VALUES (?, ?)";
		pstmt = con.prepareStatement(query);
		System.out.println("Comando SQL => " + pstmt);
		pstmt.setString(1, d.getNome());
		pstmt.setInt(2, d.getCod_ger());
		pstmt.execute();
		fecharBanco();
	}
	
	public void atualizar(Departamento d) throws Exception {
		abrirBanco();
		String query = "UPDATE depto SET nome = ?, cod_ger = ? WHERE nro_depto = ?";
		pstmt = con.prepareStatement(query);
		System.out.println("Comando SQL => " + pstmt);
		System.out.println(d.getNome());
		System.out.println(d.getCod_ger());
		System.out.println(d.getNro_dpto());
		pstmt.setString(1, d.getNome());
		pstmt.setFloat(2, d.getCod_ger());
		pstmt.setFloat(3, d.getNro_dpto());
		pstmt.execute();
		fecharBanco();
	}
	
	public void deletar(int id) throws Exception {
		abrirBanco();
		String query = "DELETE FROM depto WHERE depto.nro_depto = ?";
		pstmt = con.prepareStatement(query);
		System.out.println("Comando SQL => " + pstmt);
		pstmt.setInt(1, id);
		pstmt.execute();
		fecharBanco();
	}
	
	public Departamento buscarPorId(Integer id) throws Exception {
		abrirBanco();
		String query = "SELECT * FROM depto WHERE depto.nro_depto = ?";
		pstmt = con.prepareStatement(query);
		System.out.println("Comando SQL => " + pstmt);
		pstmt.setInt(1, id);
		ResultSet rs = pstmt.executeQuery();
		Departamento d = new Departamento();
		if(rs.next()) {
			d.setNro_dpto(rs.getInt("nro_depto"));
			d.setNome(rs.getString("nome"));
			d.setCod_ger(rs.getInt("cod_ger"));
		}
		fecharBanco();
		return d;
	}
	
	public List<Departamento> listar() throws Exception {
		abrirBanco();
		String query = "SELECT * FROM depto";
		pstmt = con.prepareStatement(query);
		System.out.println("Comando SQL => " + pstmt);
		ResultSet rs = pstmt.executeQuery();
		Departamento d = null;
		List<Departamento> listar = new ArrayList<Departamento>();
		while (rs.next()) {
			d = new Departamento();
			d.setNro_dpto(rs.getInt("nro_depto"));
			d.setNome(rs.getString("nome"));
			d.setCod_ger(rs.getInt("cod_ger"));
			listar.add(d);
		}
		fecharBanco();
		return listar;
	}
}